package com.ykt.service;

import com.jfinal.aop.Enhancer;
import com.ykt.cache.RepeatSubmitCache;

import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 防重复提交服务
 *
 * @author long.hua
 * @version 1.0.0
 * @since 2016-02-25 22:34
 */
public class RepeatSubmitService {


    private RepeatSubmitCache submitCache = Enhancer.enhance(RepeatSubmitCache.class.getName(), RepeatSubmitCache.class);


    private String createToken(){
        // 不是很严谨，但是针对当前业务可以满足
        return Thread.currentThread().getId() + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
    }

    /**
     * 获取 令牌
     * @param bizKey 业务关键字
     * @return 令牌
     */
    public String getToken(String bizKey){
        String token = createToken();
        submitCache.set(bizKey, token);
        return token;
    }

    /**
     * 检查token
     * @param bizKey 业务关键字
     * @param token 令牌
     * @return 成功为true，失败为false
     */
    public boolean checkToken(String bizKey, String token){
        String tokenTmp = submitCache.get(bizKey);
        if(token != null && tokenTmp != null && token.equals(tokenTmp)){
            return true;
        } else {
            return false;
        }
    }
}
